本模組透過操控 CanvasRenderingContext2D 狀態,從靜態路徑過渡到動態、事件驅動的工具。我們著重於透過 高階模式 以及數學濾波來擴展應用程式的功能。
1. 高階工具模式
例如 tools.Line 等工具使用如 trackDrag等輔助函式來抽象鼠標事件。相反地, tools.Spray 則實作 基於時間間隔的重複 透過 setInterval,在按住鼠標時實現連續像素放置。
2. 數學限制
簡單的隨機偏移會產生方形分布。為達成自然的圓形「畫筆」效果,我們使用畢氏定理來篩選點:$x^2 + y^2 < r^2$。或者,也可使用極座標搭配 Math.sin 與 Math.cos 進行轉換。
3. 組合運算與狀態
除了標準筆觸外, globalCompositeOperation 屬性定義了新像素與現有像素之間的互動方式。例如,設定為 'destination-out' 可讓 tools.Erase 函式將像素轉為透明,而非僅僅塗成白色。使用者介面控制項如 controls.color 與 controls.brushSize 能即時更新 fillStyle 與 lineWidth 分別對應。
而
lineCap 屬性(例如 'round' 或 'square')控制筆觸線條末端的形狀,對於平滑繪圖至關重要。TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>